package com.yzh;

import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        Test test4 = new Test();
        Scanner input = new Scanner(System.in);

        //菜单显示
        do {
            System.out.println("*************欢迎进入京东商城**********");
            System.out.println("\t1. 添加商品");
            System.out.println("\t2. 查看所有商品");
            System.out.println("\t3. 查看指定编号商品");
            System.out.println("\t4. 添加到购物车");
            System.out.println("\t5. 显示购物车");
            System.out.println("\t6. 删除购物车中商品");
            System.out.println("\t7. 退出");
            System.out.println("**************************************");
            System.out.println("请选择菜单：");
            int choice = input.nextInt();

            switch(choice){
                case 1:
                    //System.out.println("添加商品");
                    addProduct();
                    break;
                case 2:
                    //System.out.println("查看商品");
                    showAll();
                    break;
                case 3:
                    //System.out.println("查看指定编号商品");
                    showByID();
                    break;
                case 4:
                    //System.out.println("添加到购物车");
                    test4.addCartItem();
                    break;
                case 5:
                    //System.out.println("显示购物车");
                    test4.showCart();
                    break;
                case 6:
                    test4.deleteCartItem();
                    break;
                case 7:
                    System.out.println("退出系统");
                    return;
                default:
                    System.out.println("输入错误，请重新输入");
            }
        }while (true);
    }
    //创建一个共同的实现类  避免多次创建导致数据不能同步
    CartItemDao cartItemDao =new CartItemDaoImpl();

    /**
     * 删除商品条目
     */
    private void deleteCartItem() {
        CartItem cartItem = new CartItem();
        //输入商品编号
        Scanner input = new Scanner(System.in);
        System.out.println("请输入要删除的商品编号");
        int delId = input.nextInt();
        //输入要删除的数量
        System.out.println("请输入要删除的商品数量");
        int delAmount = input.nextInt();
        //根据编号查找商品
        ProductDao productDao = new ProductDaoImpl();
        Product product = productDao.findByID(delId);
        //根据商品查找商品条目

        cartItem.setId(delId);
        cartItem.setAmount(delAmount);
        cartItem.setName(product.getName());
        cartItem.setPrice(product.getPrice());
        //调用后台删除条目
        cartItemDao.delCartItem(cartItem);
    }

    /**
     * 添加商品到购物车
     */
    private void addCartItem() {
        //输入商品的编号
        Scanner input = new Scanner(System.in);
        System.out.println("请输入要添加的商品编号");
        int id = input.nextInt();
        //输入要购买的商品的数量
        System.out.println("请输入要添加的商品数量");
        int amount = input.nextInt();
        //根据编号获取商品信息
        ProductDao productDao = new ProductDaoImpl();
        Product product = productDao.findByID(id);

        //构建购物车条目
        CartItem cartItem = new CartItem();
        cartItem.setId(id);
        cartItem.setAmount(amount);
        cartItem.setPrice(product.getPrice());
        cartItem.setName(product.getName());

        //调用后台添加条目
        //CartItemDao cartItemDao =new CartItemDaoImpl();
        cartItemDao.addCartItem(cartItem);
        System.out.println("添加成功！");
    }

    /**
     * 从后台获取购物车信息  前台显示
     */
    private void showCart() {
        //获取购物车
        //CartItemDao itemDao = new CartItemDaoImpl();
        Map<Integer, CartItem> shoppingCart = cartItemDao.findCart();
        //前台显示
        //实现总计
        double totle=0.0;
        Collection<CartItem> items = shoppingCart.values();
        System.out.println("编号\t商品名称\t商品价格\t小计");
        for(CartItem item:items){
            System.out.println(item.getId()+"\t"+item.getName()+"\t"+item.getPrice()+"\t"+item.getAmount()
                    +"\t"+(item.getPrice()*item.getAmount()));
            //计算总计
            totle = totle +(item.getPrice()*item.getAmount());
        }
        //输出总计
        System.out.println("总计："+totle);
    }

    //添加商品
    private static void addProduct() {
        //输入产品的相关信息 编号 商品名称       价格 颜色 尺寸 库存
        Scanner input = new Scanner(System.in);
        System.out.println("请输入商品编号");
        int id = input.nextInt();
        System.out.println("请输入商品名称");
        String name = input.next();
        System.out.println("请输入商品价格");
        double price = input.nextDouble();
        System.out.println("请输入商品颜色");
        String color = input.next();
        System.out.println("请输入商品尺寸");
        int size = input.nextInt();
        System.out.println("请输入商品库存");
        int stock = input.nextInt();

        //将商品信息写入后台
        ProductDao productDao = new ProductDaoImpl();
        Product product = new Product(id,name,price,color,size,stock);
        productDao.add(product);
    }

    //获取商品信息并输出
    public static void showAll(){
        //获取后台数据
        ProductDao productDao = new ProductDaoImpl();
        List<Product> productList=productDao.findAll();
        //输出
        System.out.println("编号\t商品名称    \t价格\t颜色\t尺寸\t库存");
        for (Product product:productList) {
            System.out.println(product.getId()+"\t"+product.getName()+"\t"+product.getPrice()
                    +"\t"+product.getColor()+"\t"+product.getSize()+"\t\t"+product.getStock());
        }
    }
    //获取指定编码的商品并输出
    public static void showByID(){
        //输入要查询的商品编号
        Scanner input = new Scanner(System.in);
        System.out.println("请输入想要查询的商品编号");
        int id = input.nextInt();
        //获取商品信息
        ProductDao productDao = new ProductDaoImpl();
        Product product = productDao.findByID(id);
        if (product == null){
            System.out.println("您要查找的商品不存在");
        }else{
            System.out.println("编号\t商品名称    \t价格\t颜色\t尺寸\t库存");
            System.out.println(product.getId()+"\t"+product.getName()+"\t"+product.getPrice()
                    +"\t"+product.getColor()+"\t"+product.getSize()+"\t\t"+product.getStock());
        }
    }
}